home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d1 / eddtv4.arc / CMOSREAD.ASM < prev    next >
Assembly Source File  |  1988-03-28  |  4KB  |  100 lines

  1.          .XLIST
  2.          .286                     ; ENABLE 80286 OP CODES
  3.          PAGE  80,120
  4.          PAGE
  5.          TITLE èÄ CMOSREAD - CONFIGURATION MEMORY (CMOS) READö
  6.          .LIST
  7.          SUBTTL ROUTINE TO READ CONFIGURATION (CMOS) MEMORY
  8.          COMMENT *
  9.  
  10.          CMOSREAD - VERSION 1.00
  11.  
  12.          Copyright 1987,1988 Don Gentry
  13.  
  14.          A limited license is granted to all users of this program,
  15.          to make copies of this program, and distribute them to
  16.          other users, on the following conditions:
  17.  
  18.          1. The notice on this page is not to be removed or altered
  19.  
  20.          2. No fee is to be charged for copying or distributing
  21.             the program.
  22.  
  23.          3. No warranty of any kind is offered. This program is offered
  24.             on an "AS IS" basis. Each user should verify that it meets
  25.             his needs and verify correct operation.
  26.  
  27.          4. No further restrictions on redristribution of any kind may
  28.             be required. This includes, but is not limited to,
  29.             COMPUSERVE or other program distribution services,
  30.             by electronic or other means.
  31.  
  32.          FOR HELP OR SUGGESTIONS WRITE:
  33.  
  34.          DON GENTRY
  35.          183 BELLEGROVE CIRCLE
  36.          BRANDON, MS  39042
  37.  
  38.          OR CALL (601) 992-0577
  39.                                                                 *
  40.          PAGE
  41. ;-----------------------------------------------------------------------
  42. ;
  43. ;        PROCEDURE CMOSREAD
  44. ;
  45. ;        PURPOSE:
  46. ;              READ FROM CONFIGURATION (CMOS) MEMORY
  47. ;
  48. ;        PARAMETERS:
  49. ;              DS:DX - POINTER TO A 32 BYTE AREA TO CONTAIN
  50. ;                      THE CONTENTS OF CMOS MEMORY BYTES
  51. ;                      10 - 2F
  52. ;
  53. ;        OUTPUT:
  54. ;              THE 32 BYTE AREA POINTED TO BY DS:DX CONTAINS
  55. ;              A COPY OF CMOS MEMORY BYTES 10 - 2F
  56. ;
  57. ;-----------------------------------------------------------------------
  58.          PUBLIC CMOSREAD          ; TELL THE LINKER ABOUT US
  59. ;
  60. ; -----  EQUATES FOR EASE OF CODING
  61. ;
  62. CM_ADDR  EQU   070H               ; CMOS ADDRESSING PORT
  63. CM_IO    EQU   071H               ; CMOS I/O PORT
  64. ;
  65. CMR_CODE SEGMENT PUBLIC 'CODE'    ; IDENTIFY THE CODE SEGMENT
  66.          ASSUME CS:CMR_CODE       ; INFORM THE ASSEMBLER
  67. CMOSREAD PROC  FAR               ; IDENTIFY THE PROCEDURE
  68.          JMP   CMR_GO             ; JUMP OVER MODULE ID
  69.          DB    8                  ; LENGTH OF ID
  70.          DB    'CMOSREAD'         ; MODULE EYE-CATCHER
  71.          DB    'V1M0'             ; VERSION & MOD LEVEL
  72.          DB    'Copyright 1987,1988 Don Gentry'
  73. CMR_GO:                           ; BEGIN ACTUAL LOGIC
  74.          PUSHA                    ; SAVE REGISTERS
  75.          MOV   BX,DX              ; GET RECEIVING FIELD ADDRESS
  76.          MOV   CX,02FH            ; GET ENDING BYTE OF CMOS
  77. CMR_LOOP:                         ; LOOP FOR CMOS DATA
  78.          MOV   AL,CL              ; GET FIRST BYTE TO RETRIEVE
  79.          OUT   CM_ADDR,AL         ; SEND ADDRESS TO PORT
  80.          JMP   $+2                ; WAIT FOR DATA TO SETTLE
  81.          JMP   $+2                ;   ON THE BUS
  82.          IN    AL,CM_IO           ; READ THE DATA BYTE
  83.          JMP   $+2                ; WAIT FOR DATA TO SETTLE
  84.          JMP   $+2                ;   ON THE BUS
  85.          MOV   SI,CX              ; GET RELATIVE BYTE IN SI
  86.          SUB   SI,010H            ; ADJUST FOR NOT RETRIEVED
  87.          MOV   DS:[BX+SI],AL      ; SAVE THE BYTE FROM CMOS
  88.          CMP   CX,010H            ; DONE THEM ALL ?
  89.          JE    CMR_EXIT           ; ...YES - EXIT THE LOOP
  90.          LOOP  CMR_LOOP           ; LOOP 'TIL DONE
  91. CMR_EXIT:                         ; EXIT HERE WHEN DONE
  92.          POPA                     ; RESTORE REGISTERS
  93. ;
  94. ; -----  RETURN TO CALLER
  95. ;
  96.          RET                      ; RETURN
  97. CMOSREAD ENDP                     ; END OF PROCEDURE
  98. CMR_CODE ENDS                     ; END OF SEGMENT
  99.          END
  100.